home *** CD-ROM | disk | FTP | other *** search
/ Ray Dream Studio 5 / Ray Dream.iso / pc / DreamSDK / Windows / SAMPLES / PRIMITIV / FLAT / COMFLAT.H < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-11  |  2.7 KB  |  76 lines

  1. // Copyright (c)1995 Ray Dream, Inc. All Rights Reserved.
  2. /* $Id: COMFlat.h 1.5 1997/06/20 22:30:30 damien Exp $ */
  3.  
  4. // Rectangular Flat surface
  5. // COM Example of a Geometric Primitive based on Facets
  6. //
  7.  
  8. #ifndef __COMFLAT__
  9. #define __COMFLAT__  
  10.  
  11. #ifndef __I3DEXPRM__
  12. #include "I3DExPrm.h"
  13. #endif
  14.                   
  15. #ifndef __FLATDLL__
  16. #include "FlatDLL.h"
  17. #endif
  18.  
  19. // Component Object Model Definition :
  20.                     
  21. // define the Flat CLSID
  22. // 44CB8480-BB96-11CE-93A4-0000E202D5A5
  23. DEFINE_GUID(CLSID_Flat, 0x44CB8480L, 0xBB96, 0x11CE, 0x93, 0xA4, 0x00, 0x00, 0xE2, 0x02, 0xD5, 0xA5);
  24.  
  25.  
  26. // Flat Surface definition : 
  27. // Flat Object :
  28. #undef INTERFACE
  29. #define INTERFACE Flat
  30. class Flat : public I3DExGeometricPrimitive, public I3DExDataExchanger {
  31. public :  
  32.   Flat();
  33.   ~Flat();
  34.   
  35.   // IUnknown Interface :
  36.   STDMETHODIMP         QueryInterface(THIS_ REFIID riid, LPVOID FAR* ppvObj);
  37.   STDMETHODIMP_(ULONG) AddRef(THIS);
  38.   STDMETHODIMP_(ULONG) Release(THIS);
  39.   
  40.   // I3DExtension method :
  41.   STDMETHODIMP_(I3DExtension*) Clone(THIS);
  42.   STDMETHODIMP                 ShellUtilitiesInit(THIS_ IShUtilities* shellUtilities);  
  43.   
  44.   // I3DExDataExchanger methods :
  45.   STDMETHODIMP_(ExtensionDataMap*) GetExtensionDataMap(THIS);
  46.   STDMETHODIMP_(void*)            GetExtensionDataBuffer(THIS);
  47.   STDMETHODIMP                     ExtensionDataChanged(THIS);
  48.   STDMETHODIMP                     HandleEvent(THIS_ ULONG sourceID);
  49.   STDMETHODIMP_(short)            GetResID(THIS);
  50.   
  51.   // I3DExGeometricPrimitiv methods
  52.   // Geometric Calls
  53.   STDMETHODIMP           GetBBox(THIS_ BOX3D* bbox);
  54.   STDMETHODIMP           EnumPatches(THIS_ EnumPatchesCallback callback, void* privData);
  55.   STDMETHODIMP           EnumFacets(THIS_ EnumFacetsCallback callback, void* privData,NUM3D fidelity);
  56.     STDMETHODIMP           GetNbrLOD(short &nbrLod);
  57.     STDMETHODIMP           GetLOD(short lodIndex, NUM3D &lod);
  58.     STDMETHODIMP           MakeFacetMesh(THIS_ short index, FacetMesh &amesh);
  59.     STDMETHODIMP           MakeFacetMesh(THIS_ NUM3D lod,FacetMesh &amesh);
  60.   // Shading Calls
  61.   STDMETHODIMP_(ULONG) GetUVSpaceCount(THIS);
  62.   STDMETHODIMP         GetUVSpace(THIS_ ULONG uvSpaceID, UVSpaceInfo* uvSpaceInfo);
  63.   STDMETHODIMP         UV2XYZ(THIS_ VECTOR2D* uv, ULONG uvSpaceID, VECTOR3D* resultPosition, BOOLEAN* inUVSpace);
  64.   // Ray tracing Calls
  65.   STDMETHODIMP RayHit(THIS_ BOOLEAN* didHit, Ray3D* aR, RayHitParameters* RayHitParams, RayHit3D* hit);
  66.   STDMETHODIMP GetRayHitDetails(THIS_ RayHit3D* hit);
  67.   STDMETHODIMP RayAllHits(THIS_ Ray3D* aR, NUM3D tmin, NUM3D tmax, RayHit3D* hit, RayHitCallback callback, void* privData);
  68.   
  69. private :
  70.   ULONG      fCRef;      // reference Counter
  71.   };
  72.  
  73.  
  74. #endif // __FLAT__
  75.  
  76.